#ifndef	EPUCKINTERFACE_HPP__
#define	EPUCKINTERFACE_HPP__

#include <string>
using std::string;

#include "epuck_types.hpp"

namespace gui
{
	class EpuckImage;

	class EpuckInterface
	{
	public:
		// camera
		virtual void getCameraImage( EpuckImage &image ) = 0;
		virtual EpuckImage &cameraShot() = 0;

		// drive
		virtual void setMotorSpeed( int left, int right ) = 0;
		virtual Int2 getMotorSpeed() = 0;
		virtual void setMotorPosition( int left, int right ) = 0;
		virtual Int2 getMotorPosition() = 0;
		virtual void stopRobot() = 0;

		// leds
		virtual void setBodyLED( LEDState state ) = 0;
		virtual void setFrontLED( LEDState state ) = 0;
		virtual void setLED( int number, LEDState state ) = 0;

		virtual int getSelectorPosition() = 0;
		virtual string getHelpText() = 0;
		virtual string getVersion() = 0;

		// Sound
		virtual void playSound( int sampleNumber ) = 0;
		virtual Int3 getMicrophones() = 0;

		// Sensors
		virtual void calibrateProximitySensors() = 0;
		virtual Int8 getProximitySensors() = 0;
		virtual Int8 getLightSensors() = 0;
		virtual Int3 getAccelerometer() = 0;
	};
}

#endif

